/*
 * @Author: hongbin
 * @Date: 2023-10-12 11:19:48
 * @LastEditors: hongbin
 * @LastEditTime: 2023-10-13 08:49:45
 * @Description: 使用 node-mongodb-native
 */
import { MongoClient, ObjectId } from "mongodb";

const options = {
  /**
   * 本地使用127.0.0.1而不是localhost
   * 因为 Node.js 18 及更高版本更喜欢 IPv6 地址，
   * 这意味着，在许多计算机上，Node.js 将解析localhost为 IPv6 地址::1，
   * 而 Mongoose 将无法连接，除非 mongodb 实例在启用了 ipv6 的情况下运行。
   */
  host: "127.0.0.1",
  port: "27017",
  db_name: "work",
};

const MongoClientConfig = {
  auth: {
    username: "hongbin",
    password: "HelloHongbin",
  },
};

const url = `mongodb://${options.host}:${options.port}/${options.db_name}`;

export class DbNative {
  constructor() {
    const client = new MongoClient(url, MongoClientConfig);
    client.connect();
    this.client = client;

    client.addListener("connectionCreated", () => {
      console.log("mongodb创建连接成功🎉");
    });

    const db = client.db();
    this.db = db;
  }

  /** 返回文档列表 */
  listCollections() {
    return this.db.listCollections().toArray();
  }

  /** 关闭客户端及其基础连接 */
  close() {
    this.client.close();
  }
}
